package com.itheima;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

// 配置类  @Configuration 标识
// 扫描包的注解  @ComponentScan
// 读取属性配置文件 @PropertySource 读取配置文件的数据
// 获取配置的数据，@Value并赋值给对象的属性
@Configuration
@ComponentScan("com.itheima")  // 通过包扫描，完成bean的实例化
@PropertySource("jdbc.properties") // 构建一个德鲁伊的连接池，读取配置文件的信息
public class SpringApp {

    @Value("${jdbc.driver}")
    private String driver;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.user}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Bean  // 把这个方法的返回对象，交给IoC容器,自动加载运行
    // 作用：通过一个方法来实例化一个Bean
    // 注意：只要写在配置类中，才起作用
    // 运行：配置类加载时候，此方法就自动运行了
    public DruidDataSource createDataSource(){
        //创建数据源对象并返回
        System.out.println("createDataSource=====");
        System.out.println(driver);
        System.out.println(url);
        System.out.println(username);
        System.out.println(password);
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driver);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        return druidDataSource;
    }
}
